home *** CD-ROM | disk | FTP | other *** search
/ System Booster / System Booster.iso / Screenblankers / GBlanker / GSource / parse.c < prev    next >
C/C++ Source or Header  |  1996-09-26  |  2KB  |  86 lines

  1. #include <proto/exec.h>
  2. #include <proto/dos.h>
  3. #include <ctype.h>
  4. #include "protos/parse.h"
  5.  
  6. extern VOID *Memory;
  7.  
  8. LONG ScanDigit( BPTR File )
  9. {
  10.     LONG Char, Digit;
  11.  
  12.     while( isspace( Char = FGetC( File )));
  13.     Digit = Char - '0';
  14.     do
  15.     {
  16.         Char = FGetC( File );
  17.         if( isdigit( Char ))
  18.         {
  19.             Digit *= 10;
  20.             Digit += ( Char - '0' );
  21.         }
  22.         else
  23.             break;
  24.     }
  25.     while( 1 );
  26.  
  27.     return Digit;
  28. }
  29.  
  30. STRPTR ScanToken( BPTR File )
  31. {
  32.     STRPTR Anchor, Ptr = AllocPooled( Memory, sizeof( BYTE ) * 64 );
  33.  
  34.     if( Anchor = Ptr )
  35.     {
  36.         while( isspace( *Ptr = FGetC( File )));
  37.         
  38.         if( *Ptr == '"' )
  39.         {
  40.             *Ptr = ( BYTE )FGetC( File );
  41.             while( *Ptr != '"' )
  42.                 *(++Ptr) = ( BYTE )FGetC( File );
  43.         }
  44.         else
  45.         {
  46.             do
  47.                 *(++Ptr) = ( BYTE )FGetC( File );
  48.             while( !isspace( *Ptr ));
  49.         }
  50.         *Ptr = '\0';
  51.     }
  52.     
  53.     return Anchor;
  54. }
  55.  
  56. STRPTR *ScanTokenArray( BPTR File )
  57. {
  58.     LONG NumTokens = ScanDigit( File ), i;
  59.     STRPTR *Tokens;
  60.  
  61.     if( Tokens = AllocPooled( Memory, sizeof( STRPTR ) * ( NumTokens + 1 )))
  62.         for( i = 0; i < NumTokens; i++ )
  63.             Tokens[i] = ScanToken( File );
  64.     
  65.     return Tokens;
  66. }
  67.  
  68. LONG ScanType( BPTR File )
  69. {
  70.     STRPTR IDStr = ScanToken( File );
  71.  
  72.     switch( tolower( IDStr[0] ))
  73.     {
  74.     case 'c':
  75.         return GAD_CYCLE;
  76.     case 'd':
  77.         return ( tolower( IDStr[1] ) == 'i' )? GAD_DISPLAY : GAD_DELIM;
  78.     case 'f':
  79.         return GAD_FONT;
  80.     case 's':
  81.         return ( tolower( IDStr[1] ) == 'l' )? GAD_SLIDER : GAD_STRING;
  82.     }
  83.  
  84.     return 0L;
  85. }
  86.